package main

import "fmt"

/*
验证回文串(string)
给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
*/

func isPalindrome(s string) bool {
	var r []rune
	for _, v := range s {
		// Ascii编码中0-9:[48-57], A-Z:[65-90], a-z:[97-122]
		if v < 48 || (v > 57 && v < 65) || v > 122 || (v > 90 && v < 97) {
			continue
		} else if v >= 97 && v <= 122 {
			r = append(r, v-32) // 转换为大写字母
		} else {
			r = append(r, v)
		}
	}
	fmt.Println("r:", r)
	for i := 0; i < len(r)/2; i++ {
		if r[i] != r[len(r)-1-i] {
			return false
		}
	}
	return true
}

func main() {
	s := "A man, a plan, a canal: Panama"
	isPalindrome(s)
}
